﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using RecommenderSystem.algorithms;
using RecommenderSystem.algorithms.memoryBased;
using RecommenderSystem.algorithms.modelBased;
using RecommenderSystem.algorithms.popularityBased;
using RecommenderSystem.algorithms.itemBased;

namespace RecommenderSystem.misc
{
    class AlgorithmsFactory
    {
        public static Dictionary<string, Algoritm> getAlgorithms(Dictionary<string, User> users, ICollection<IDataRecord> dataset, Dictionary<string, Cache> cache)
        {
            Dictionary<string, Algoritm> algorithms = new Dictionary<string, Algoritm>();

            algorithms.Add("Cosine", new Cosine(users, dataset, cache));
            algorithms.Add("Pearson", new Pearson(users, dataset, cache));
            algorithms.Add("Random", new RandomAlg(users, dataset));
            algorithms.Add("BasicDT", new BasicDT(users, dataset));
            algorithms.Add("DT", new DT(users, dataset));
            algorithms.Add("SVD", new SVD(users, dataset, cache));
            //algorithms.Add("Popularity", new Popularity(users, dataset));
            //algorithms.Add("NNSVD", new NNSVD(users, dataset, cache));
            //algorithms.Add("NNCosine", new NNCosine(users, dataset, cache));
            //algorithms.Add("NNPearson", new NNPearson(users, dataset, cache));
            //algorithms.Add("CP", new CP(users, dataset, cache));

            return algorithms;
        }
    }
}
